
//3499.操作后最大活跃区段数I
class Solution {
public:
    int maxActiveSectionsAfterTrade(string s) {
        //找0  ---- 1 ---- 0的区间,将每一个0区间段的个数进行记录,然后找到两个相邻区段最大和
        int n=s.size();
        int i=0,ret=0;
        vector<int> zero;   //记录每一个区间中0的个数
        while(i<n)
        {
            while(i<n&&s[i]=='1') i++,ret++;

            int start=i;
            while(i<n&&s[i]=='0') i++;
            if(i!=start) zero.push_back(i-start);   
        }
        
        int r=0,l=0,more=0,tmp=0;  //查找相邻两个区间最大和
        while(r<zero.size())
        {
            while(r<zero.size()&&r-l<2) 
                tmp+=zero[r++];

            if(r-l==2&&tmp>more) more=tmp;
            tmp-=zero[l++];
        }
        return ret+more;
    }
};